/*******************************************************************************
 * WayStudio GUI Library
 * Developer:Xu Waycell
*******************************************************************************/
#ifndef LAYOUTIMPLEMENTATION_HEADER
#define LAYOUTIMPLEMENTATION_HEADER

#include <layout.hpp>
#include <list.hpp>
#include <map.hpp>

BEGIN_HEADER

BEGIN_WS_NAMESPACE

struct LOCAL LayoutSpecific {
	explicit LayoutSpecific(Layout*);
	~LayoutSpecific();

	static Map<Layout*, LayoutSpecific*> SpecificMap;
	static LayoutSpecific* Fetch(Layout*);

	Layout* H_Layout;
	Widget* H_Parent;
	List<Widget*> LST_Widget;

	UNCOPYABLE(LayoutSpecific)
};

class LOCAL Layout::LayoutImplementation {
	UNCOPYABLE(LayoutImplementation)
public:
	LayoutImplementation();
	~LayoutImplementation();

	void Initial(Layout*);
	void Cleanup();

	LayoutSpecific* H_Specific;
};

END_WS_NAMESPACE

END_HEADER

#endif
